package jcworks;
import java.lang.String;

public class Jelgenerator extends Jelforras {
	private boolean[] jelsorozat;
        private int utolso = 0;

        public Jelgenerator()
            {
            }

           //A naplózás miatt kell itt is...
           public void setAzonosito(int azonosito)
            {

                super.azonosito = azonosito;
                              if(Vezerlo.konzolnaplozas) Vezerlo.naplozas("Letrejott a(z) "+Integer.toString(azonosito)+". azonositoju jelgenerator");
            }
        
        public Jelgenerator(String jelsorozat){
            this.jelsorozat=new boolean[jelsorozat.length()];
            for(int i=0; i<(jelsorozat.length()); i++){
                if(jelsorozat.charAt(i)=='1') this.jelsorozat[i]=true;
                else if(jelsorozat.charAt(i)=='0') this.jelsorozat[i]=false;
            }
            if(Vezerlo.konzolnaplozas) Vezerlo.naplozas("Letrejott a(z) "+Integer.toString(azonosito)+". azonositoju Jelgenerator, jelsorozata: "+jelsorozat);
        }

	public void setJelsorozat(String jelsorozat) {
            //jelsorozat beállítása
            this.jelsorozat=new boolean[jelsorozat.length()];
            for(int i=0; i<(jelsorozat.length()); i++){
                if(jelsorozat.charAt(i)=='1') this.jelsorozat[i]=true;
                else if(jelsorozat.charAt(i)=='0') this.jelsorozat[i]=false;
            }
            if(Vezerlo.konzolnaplozas) Vezerlo.naplozas("A(z) "+Integer.toString(azonosito)+". azonositoju jelgenerator uj jelsorozata: "+jelsorozat);
	}

        public boolean[] getJelsorozat(){
            //if(Vezerlo.konzolnaplozas) Vezerlo.naplozas(Integer.toString(azonosito)+". azonositoju Jelgenerator - getJelsorozat");
            return jelsorozat;
        }

        public String getJelsorozatAsString(){
            String tmp = "";

            for(int i=0; i<(jelsorozat.length); i++)
                {
                    if(jelsorozat[i])
                        tmp = tmp + 1;
                    else
                        tmp = tmp + 0;
                }

            return tmp;
        }

        public void bokes() throws Exception{

            //if(Vezerlo.konzolnaplozas) Vezerlo.naplozas(Integer.toString(azonosito)+". azonositoju Jelgenerator - bokes");

            //Van mit kiadni?
            if(jelsorozat == null)
                throw new Exception("A(z) "+Integer.toString(azonosito)+". azonositoju jelgeneratornak ");
            
            for(int i=0; i<drotokKimenetCimei.size(); i++){
                drotokKimenetCimei.get(i).setAllapot(jelsorozat[utolso]);
            }
            
            if( utolso != (jelsorozat.length-1) )
                {
                    utolso++;
                }
            else
                {
                    utolso = 0;
                }

        }

        public void setDrotCim(Drot drotCim, boolean irany) throws Exception{
            //drótcímek beállítása
            //if(Vezerlo.konzolnaplozas) Vezerlo.naplozas(Integer.toString(azonosito)+". azonositoju Jelgenerator - setDrotCim");
            if(irany == false)
                drotokKimenetCimei.add(drotCim);
            else
                throw new Exception("A(z) "+Integer.toString(azonosito)+". azonositoju jelgenerator drottal valo osszekotese kozben, rossz iranyu drot bekotese!");
        }

        public void visszateker(){
            //az utolsó változó értékéne alaphelyzetbe állítása
            utolso=0;
        }
}